package com.edu.exam.enums.grading;

import com.edu.exam.enums.core.BaseEnum;

import java.util.Arrays;

/**
 * 导入类型枚举
 *
 * <p>定义成绩批量导入的类型，包括新建、更新、覆盖等不同操作模式。</p>
 *
 * @author System
 * @version 1.0.0
 * @since 2025-11-14
 */
public enum ImportType implements BaseEnum {

    /** 新建导入 */
    CREATE("CREATE", "新建导入"),

    /** 更新导入 */
    UPDATE("UPDATE", "更新导入"),

    /** 覆盖导入 */
    OVERWRITE("OVERWRITE", "覆盖导入"),

    /** 追加导入 */
    APPEND("APPEND", "追加导入"),

    /** 同步导入 */
    SYNC("SYNC", "同步导入"),

    /** 备份导入 */
    BACKUP("BACKUP", "备份导入"),

    /** 合并导入 */
    MERGE("MERGE", "合并导入"),

    /** 验证导入 */
    VALIDATE("VALIDATE", "验证导入"),

    /** 预览导入 */
    PREVIEW("PREVIEW", "预览导入");

    private final String code;
    private final String description;

    ImportType(String code, String description) {
        this.code = code;
        this.description = description;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDescription() {
        return description;
    }

    public static ImportType fromCode(String code) {
        return Arrays.stream(values())
                .filter(e -> e.getCode().equals(code))
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("Unknown import type code: " + code));
    }
    @Override
    public String toString() {
        return description;
    }
}